﻿using PureMVC.Interfaces;
using PureMVC.Patterns.Mediator;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class NewMainViewMediator : Mediator
{
    public  static new string NAME = "NewMainViewMediator";

    public NewMainViewMediator():base(NAME)
    {

    }
    public void SetView(NewMainView view)
    {
        ViewComponent = view;
        view.btnRole.onClick.AddListener(()=> {
            SendNotification(PureNotification.SHOW_PANEL, "RolePanel");
        });
    }

    /// <summary>
    /// 重写监听通知的方法
    /// </summary>
    /// <returns></returns>
    public override string[] ListNotificationInterests()
    {
        //这是一个PureMVC的规则
        //就是你需要监听哪些通知 就在这里把通知们通知字符串数组的形式返回出去
        //PureMVC会帮我们监听这些通知
        //类似于通过事件名注册事件监听
        return new string[] {
            PureNotification.UPDATE_PLAYER_INFO,
        };
    }

    /// <summary>
    /// 重写处理通知的方法
    /// </summary>
    /// <param name="notification"></param>
    public override void HandleNotification(INotification notification)
    {
        //INotification对象里面包含两个重要参数
        //1.通知名 我们根据这个名字来做对应的处理 notification.Name
        //2.通知中包含的信息 notification.Body
        switch (notification.Name)
        {
            case PureNotification.UPDATE_PLAYER_INFO:
                //收到通知的时候做处理
                //因为可能出现界面被移除了但是mediator还在监听 需要判断下界面不为空再处理
                if (ViewComponent!=null)
                {
                    (ViewComponent as NewMainView).UpdateInfo(notification.Body as PlayerDataObj);
                }
                break;
        }
    }

    public override void OnRegister()
    {
        base.OnRegister();
    }


}
